#ifndef _META_ABSTRACT_TASK_H_
#define _META_ABSTRACT_TASK_H_

#include <iostream>

namespace Maha
{
      namespace Meta
      {
            class AbstractTask
            {
	      public:
	      	AbstractTask() { std::cout << "task created" << std::endl; };

                  virtual AbstractTask* Clone() const = 0;
            
	      	virtual void exec() = 0;
		
	      	virtual ~AbstractTask()  { std::cout << "task destroyed" << std::endl; };
	      };
	
      } // Meta
} // Maha

#endif // _META_ABSTRACT_TASK_H_
